package cn.quevo.core.lang;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 时间格式化
 *
 * @author July july_sky@foxmail.com
 * @date 2017年6月30日 下午3:31:49
 * @Copyright ©2015-2035 湘豫(北京)科技有限公司. All Rights Reserved.
 */
public class DateFormatUtils extends org.apache.commons.lang3.time.DateFormatUtils {
    private final static Logger log = LoggerFactory.getLogger(DateFormatUtils.class);

    /**
     * 格式化时间
     *
     * @param date
     *            要格式化的时间对象
     * @param pattern
     *            格式(比如yyyy-MM-dd HH:mm:ss)
     * @return 格式化之后的时间字符串
     */
    public static String format(Date date, String pattern) {
        if (date == null || StringUtils.isBlank(pattern)) {
            return "";
        }
        return new SimpleDateFormat(pattern).format(date);
    }

    /**
     * 时间类型转换
     *
     * @param date
     * @param pattern
     * @return
     * @author July july_sky@foxmail.com
     * @date 2016年10月10日下午10:18:06
     */
    public static Date parse(String date, String pattern) {
        if (date == null || StringUtils.isBlank(pattern)) {
            return null;
        }
        try {
            return new SimpleDateFormat(pattern).parse(date);
        } catch (ParseException e) {
            log.error(e.getMessage(), e);
        }
        return null;
    }

    /**
     * 获取日期格式
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月30日 下午3:39:49
     * @param text
     * @return[0]=日期字符串,[1]=format格式
     */
    public static String[] getDateConvert(String text) {
        if (StringUtils.isBlank(text)) {
            return null;
        }
        String[] result = new String[2];
        text = text.trim();
        if (text.length() == 8) {
            result[0] = text.substring(0, 4) + "/" + text.substring(4, 6) + "/" + text.substring(6, 8);
            result[1] = "yyyy/MM/dd";
            return result;
        }
        result[0] = text;
        if (text.length() == 10) {// yyyy/MM/dd
            result[1] = "yyyy/MM/dd";
            if (text.indexOf(".") != -1) {
                result[1] = "yyyy.MM.dd";
            } else if (text.indexOf("-") != -1) {
                result[1] = "yyyy-MM-dd";
            }
            return result;
        }
        if (text.length() == 16) {// yyyy/MM/dd HH:mm
            result[1] = "yyyy/MM/dd HH:mm";
            if (text.indexOf(".") != -1) {
                result[1] = "yyyy.MM.dd HH:mm";
            } else if (text.indexOf("-") != -1) {
                result[1] = "yyyy-MM-dd HH:mm";
            }
            return result;
        }
        if (text.length() == 19) { // yyyy/MM/dd HH:mm:ss
            result[1] = "yyyy/MM/dd HH:mm:ss";
            if (text.indexOf(".") != -1) {
                result[1] = "yyyy.MM.dd HH:mm:ss";
            } else if (text.indexOf("-") != -1) {
                result[1] = "yyyy-MM-dd HH:mm:ss";
            }
            return result;
        }
        return null;
    }
}
